The Internet is a distributed network comprising a collection of servers to which remote clients communicate. The World Wide Web is a name for the collection of servers available on the Internet. The Web thus forms a communication pathway between a client and any of the servers available on the Internet.
Clients on the World Wide Web are usually Web browsers. These are programs that make requests to servers on the Internet and then process and display pages returned by the server. The World Wide Web server, in turn, is a program that handles requests from the browsers and serves up documents to the requesting browsers. These documents are usually in the hypertext markup language (HTML) which is a language universally recognized on the World Wide Web by the browsers and servers. In order to read the Web pages being returned by a server, a browser may execute a scripting language to display the returned page.
Popular scripting languages are the so-called javascript and the visual basic script. The hypertext markup language (HTML) is a command format used to inform the browser how to display a returned page. It may also specify behind the scenes information, such as alternate graphics or scripting languages. In communicating the Web pages between the server and the browser, the communication protocol employed is the so-called hypertext transfer protocol (HTTP). This is the communication protocol used by the World Wide Web to coordinate communication between a Web server and a Web browser.
Ordinarily, a Web browser will request and receive "static" World Wide Web pages from Web servers. Static pages are characterized in that the page data is pre-written and fixed. Occasionally, however, a Web server will run programs to deliver dynamic content to a browser. For example, when a server communicates with a database of information, which database can be accessed and altered by a user through a browser, the server can deliver Web pages containing the database information in an as-current condition. That is, when a user contacts the Web server through a browser to access and alter a database entry, another browser later accessing that server will retrieve the modified database information. A mechanism that allows a Web server to run a program in order to deliver dynamic content is called a common gateway interface.
Currently, every server on the Web includes an access log. This log is a file that contains details of every access made to the Web server by browsers on the Internet. Details included on this log include the date of access, the time of access, the requestor's computer identification (address), the information requested, how much information was sent to the user, and possibly the status of the transfer. Further, every browser (client) on the Web includes a cache memory which retains a certain number of retrieved Web pages so these pages do not have to be re-loaded from a server over the Internet in order to be quickly retrieved by the user.
The amount of time that two computers (for example, a server and a browser) are connected together is referred to as a "session." In general terms, a session usually last from the time a client begins communicating with the server until the time it exits the communication. On the web, however, a session is defined slightly different. In some non-Internet client/server data transfers, the client and server establish a connection between themselves during which the client may request information from the server and the server provides the information to the client. In such cases, a "session" between the client and server occurs from the time connection is implemented between the client and server until the client or server exits the session. During the session, any number of data transfers and data requests can occur between the client and the server. On the Web, however, the limitations of the hypertext transfer protocol and the World Wide Web structure cause clients and servers on the Web to adhere to a non-standard concept of a "session." On the Web, a session will consist only of the time that a page (whether a data file, image file, etc.) is requested and downloaded to a user (browser). Each session between a Web client and a Web server thus amounts to one request from the client to the server for a page and one page transfer from the server to the client. Session information recorded in the log of the server will thus identify the date of the page request, the time of the page request, the computer making the page request, file information identifying the page requested, the number of bytes sent to the requesting computer to deliver the page, and possibly the status of the transfer.
The Internet is thus not like the classic case of one client computer connecting to another server computer to access, for example, a database. In the classic case, the client user will examine a database record while remaining connected to the server. In such a case, the server can record the duration of the database access by the client. These records can be used for statistical analysis regarding how much time users spend viewing the records since the sessions are defined by the time duration from connection to exit to and from the database. It may also "lock" the database record, preventing others from accessing it until this client is done.
The same is not true for the Internet connections since a session is not defined by the total connection time between a client and a server, but rather by a single page request and a single page delivery. In the Internet case, there is no way for the server to know when the user has finished using a particular record nor of how long the user viewed a particular record. Prior methods tried to address this by using manual mechanisms to inform the server when a user was finished with a record, but such systems were client-dependent and could not be implemented on the server alone. Thus, when it was important for a server to know exactly when a user was finished with a record or to know exactly how long a user viewed a record, the present Web structure did not provide an effective solution.
An example of how this problem surfaces in the Internet environment occurs when two users attempt to access information in a database via the Web. Suppose for example that user A requests information from a product inventory for a particular product X located at a warehouse. The warehouse employs a server on the Web to deliver information to users regarding the amount of inventory of the various products. Suppose also that 200 units of product X are presently available in the warehouse when user A requests the inventory information. The warehouse server upon the request from user A for a page identifying the inventory of product X will look to its database, pull off the inventory quantity "200" and deliver the page identifying this quantity to the user A. Assume then that another user, user B, requests the same inventory information for product X. The warehouse server would receive the page request from user B, look to its database, see a product X quantity of 200, and deliver a page identifying product X inventory as "200" available units. A problem then occurs when user A tells the warehouse server in another page request that it is ordering 150 units from the 200 available. The warehouse server would write the 150 unit reduction into its database in response to the order from user A. Then, user B attempts to request 100 units from warehouse server by sending a order request to the warehouse server. The warehouse server has created a problem by accepting orders for 250 units when it has only 200 available.
In the above example, it is important that the warehouse server not deliver the page to user B in response to user B's page request until the server knows that user A is finished with the same page. If user A does not, through some mechanism, manually indicate to the warehouse server that it has completed its use of the product X inventory page, the warehouse server cannot know whether delivering the same product inventory page to user B is timely and accurate.
Another example in which the limited session definition on the Web yields problems is where session control is required for statistical purposes. This occurs, for example, when companies advertising on the Web would like to know how long someone has been viewing their page, or a page bearing their advertisement. With the present Web session definition, in which a session is simply one page request and one page delivery, the server cannot know how long a user views a page or advertisement, without some manual mechanism. Thus, without some way of identifying a termination of a client's use of a particular page, the server does not know how long a user has viewed a page.
FIG. 1 identifies the present state of Internet sessions. In FIG. 1, the system 1 includes some number of clients, from client no. 1 through client no. n. The clients have access to a number of servers, including server 12 through the Internet connections 10. As shown in FIG. 1, the server 12 receives requests from the clients during sessions indicated by "A" and "B".
During session A, client no. 1 informs server 12 through the Internet 10 that it would like to receive a particularly identified page ("give me a page"). The server 12 responds to this request by assembling the page and transmitting it to the client no. 1 via the Internet 10 ("here's your page"). This pair of communications ("give me a page" and "here is your page") is the total communication between client no. 1 and server 12 for the full session "A". Similarly, client no. n may also request pages from server 12, as shown as session "B." In session B, client n also requests a page from server 12 and receives the page from server 12.
As discussed above, the problems exist when client no. 1 and client no. n generally simultaneously request a same page during session A and session B from server 12 and thus may modify the records in server 12 in an overlapping manner. Thus, in such a case, the server 12 may be modifying a database 16 erroneously in response to overlapping requests from clients. Further, problems also arise in that the server 12 cannot identify how long a session A or session B lasts, even though it records the session times in its access log 14, since the session begins and ends with, respectively, a page request and a page delivery alone.